package com.framework.test.utils;
import com.framework.test.exceptions.AutomationException;

import java.util.Properties;

/**
 * 属性工具类 - 向后兼容性包装器
 * 现在内部使用ConfigurationManager来支持多种配置文件格式和环境配置
 * 
 * @deprecated 建议直接使用 ConfigurationManager 获得更好的功能支持
 */
@Deprecated
public final class PropertiesUtil {

    private static final PropertiesUtil TEST_PROPERTIES = new PropertiesUtil();

    /**
     * @deprecated 使用 ConfigurationManager.getInstance() 替代
     */
    @Deprecated
    public static PropertiesUtil init() {
        // 确保ConfigurationManager已初始化
        ConfigurationManager.getInstance();
        return TEST_PROPERTIES;
    }

    /**
     * @deprecated 内部方法，现在委托给ConfigurationManager
     */
    @Deprecated
    private void getInstance() {
        // 委托给ConfigurationManager
        ConfigurationManager.getInstance();
    }

    /**
     * 获取属性值
     * @param propertyName 属性名
     * @return 属性值
     * @throws AutomationException 如果属性不存在
     */
    public static String getProperty(String propertyName) throws AutomationException {
        return ConfigurationManager.getProperty(propertyName);
    }
    
    /**
     * 获取属性值，如果不存在则返回默认值
     * @param propertyName 属性名
     * @param defaultValue 默认值
     * @return 属性值或默认值
     */
    public static String getProperty(String propertyName, String defaultValue) {
        return ConfigurationManager.getProperty(propertyName, defaultValue);
    }

    /**
     * 获取布尔属性值
     * @param propertyName 属性名
     * @return 布尔值
     */
    public boolean getBooleanProperty(String propertyName) {
        return ConfigurationManager.getBooleanProperty(propertyName, false);
    }

    /**
     * 获取整数属性值
     * @param propertyName 属性名
     * @return 整数值
     */
    public Integer getIntegerProperty(String propertyName) {
        return ConfigurationManager.getIntegerProperty(propertyName, 0);
    }
    
    /**
     * 获取所有属性
     * @return Properties对象包含所有配置属性
     * @throws AutomationException 如果加载属性失败
     */
    public static Properties getAllProperties() throws AutomationException {
        return ConfigurationManager.getAllProperties();
    }

    // === 新增方法，提供更好的功能支持 ===
    
    /**
     * 获取当前激活的环境配置
     * @return 当前激活的profile
     */
    public static String getActiveProfile() {
        return ConfigurationManager.getActiveProfile();
    }
    
    /**
     * 获取指定前缀的所有属性
     * @param prefix 属性前缀
     * @return 匹配前缀的所有属性
     */
    public static Properties getPropertiesWithPrefix(String prefix) {
        return ConfigurationManager.getPropertiesWithPrefix(prefix);
    }
    
    /**
     * 重新加载配置
     */
    public static void reload() {
        ConfigurationManager.reload();
    }
    
    /**
     * 打印所有配置信息（用于调试）
     */
    public static void printAllProperties() {
        ConfigurationManager.printAllProperties();
    }

}
